﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntityLayer;
using FacadeInterface;
using FacadeImplemention;
using System.Data.OleDb;
using System.Data;


namespace pryCallCenter.Procesos.CancelacionVenta
{
    public partial class frmCancelacionVenta : System.Web.UI.Page
    {
        private clsIFacadeCancelacionVenta InterfaceCancelacionVenta;
        private static List<DetalleVentaCancelacion_Result> ListaDetalleVentaCancelacion = null;
        private static List<VerificarDiasCancelacion_Result> ListaVerificarDiasCancelacion = null;
        private static List<ActualizarDocumentoEstado_Result> ListaActualizarDocumentoEstado = null;
        private static List<VerificarDocumentoEstado_Result> ListaVerificarDocumentoEstado = null;
        private static List<strDatosExcel> datosExcel = null;
        private static List<strDatosGrid> datosExcelGrid = null;
        private EntityLayer.CancelacionVenta objCancelacionVenta;

        private String ArchivoExcel;
        private String ExtensionExcel;
        private String msg, titulo;
        
        protected void Page_Load(object sender, EventArgs e)
        {

            lblnomArchivo.Text = (Session["ArchivoExcelOriginal"] != null) ? Session["ArchivoExcelOriginal"].ToString() : "";
            datosExcelGrid = (Session["Listado"] != null) ? (List<strDatosGrid>)Session["Listado"] : null;
            if (!IsPostBack)
            {
                try
                {
                    if (Session["USUARIO"] == null)
                    {
                        Response.Redirect("~/Account/Login.aspx", false);
                    }
                    //((Persona)Session["USUARIO"]).CodigoPersona.ToString();
                    if (Session["cancel"] != null)
                    {
                        if (Session["nropedido"] != null && Session["empresa"] != null && Session["tipoDoc"] != null)
                        {
                            String nropedido = Session["nropedido"].ToString();
                            lblnropedido.Text = " - " + nropedido;
                            int empresa = Convert.ToInt16(Session["empresa"].ToString());
                            String tipoDoc = Session["tipoDoc"].ToString();
                            HabilitarCampos(Convert.ToInt16(Session["cancel"].ToString()));
                         
                            hid_tipoCancelacion.Text = Session["cancel"].ToString();
                            if(Convert.ToInt16(Session["cancel"].ToString())==1)
                            {
                                Session["listado"] = null;
                            }
                            Session["cancel"] = null;
                            datosExcel = new List<strDatosExcel>();
                            DetalleVenta(empresa, tipoDoc, nropedido);
                        }
                        else
                        {
                            Session["msg"] = "No Hay ningun Pedido/Venta Seleccionado.";
                            Session["cancel"] = null;
                            Session["Grabacion"] = false;
                            Response.Redirect("~/Procesos/AdministrarPedido/frmAdministrarPedido.aspx", false);
                        }
                    }
                    else
                    {
                        hid_tipoCancelacion.Text = "0";
                        HabilitarCampos(0);
                    }
                    txtUsuario.Text = "Rocio Talla";
                    DateTime fechaActual = DateTime.Now;
                    String fechaCompleta = fechaActual.ToString("dd/MM/yyyy");
                    dtpFecha.Text = fechaCompleta;
                    lblnomArchivo.Text = "";
                }
                catch (Exception ex)
                {
                    titulo = "ERROR AL CARGAR LA PAGINA";
                    msg =  ex.Message;
                    MostrarComentario(msg, titulo);
                }
            }
            if (datosExcelGrid != null)
            {
                dgvDetalleVenta.DataSource = datosExcelGrid;
                dgvDetalleVenta.DataBind();
            }
        }

        protected void rbtCP_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtCP.Checked)
            {
                chkinternet.Enabled = true;
                chkteleffija.Enabled = true;
                chktelefmovil.Enabled = true;
                chkinternet.Checked = true;
                hid_ParcialFlag.Text = "P";
            }
        }

        protected void rbtCT_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtCT.Checked)
            {
                chkinternet.Enabled = false;
                chkteleffija.Enabled = false;
                chktelefmovil.Enabled = false;
                hid_ParcialFlag.Text = "T";
            }
        }

        protected void rbtIAC_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtIAC.Checked)
            {
                chkinternet.Enabled = false;
                chkteleffija.Enabled = false;
                chktelefmovil.Enabled = false;
                hid_ParcialFlag.Text = "I";
            }
        }

        private void DetalleVenta(int empresa, String tipoDoc, String nropedido)
        {
            try
            {
                ListaDetalleVentaCancelacion = new List<DetalleVentaCancelacion_Result>();
                InterfaceCancelacionVenta = new clsFacadeCancelacionVenta();
                ListaDetalleVentaCancelacion = InterfaceCancelacionVenta.DetalleVentaCancelacion(empresa, tipoDoc, nropedido);
                dgvDetalleVenta.DataSource = ListaDetalleVentaCancelacion;
                dgvDetalleVenta.DataBind();
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL CARGAR EL DETALLE DE LA VENTA";
                msg =  ex.Message;
                MostrarComentario(msg, titulo);
            }            
        }

        private void HabilitarCampos(int cancel)
        {
            Boolean ok;
            if (cancel == 1)
            {
                ok = true;
                rbtCP.Enabled = ok;
                rbtCT.Enabled = ok;
                rbtCP.Checked = ok;
                chkinternet.Enabled = ok;
                chkteleffija.Enabled = ok;
                chktelefmovil.Enabled = ok;
                chkinternet.Checked = ok;
                hid_ParcialFlag.Text = "P";
                ok = false;
                rbtIAC.Enabled = ok;
                dgvDetalleVenta.Enabled = ok;
                uplArchivo.Enabled = ok;
            }
            else if (cancel == 0)
            {
                ok = false;
                rbtCP.Enabled = ok;
                rbtCT.Enabled = ok;
                chkinternet.Enabled = ok;
                chkteleffija.Enabled = ok;
                chktelefmovil.Enabled = ok;
                chkinternet.Checked = ok;
                dgvDetalleVenta.Enabled = ok;
                ok = true;
                rbtIAC.Enabled = ok;
                rbtIAC.Checked = ok;
                uplArchivo.Enabled = ok;
                hid_ParcialFlag.Text = "I";
            }
        }

        protected void Grabar(object sender, EventArgs e)
        {
            try
            {
                Session["Listado"] = null;
                int tipoCancelacion = Convert.ToInt16(hid_tipoCancelacion.Text.Trim());
                if (tipoCancelacion == 1)
                {
                    GrabarCancelacionVenta();
                }
                else if (tipoCancelacion == 0)
                {
                    ImportarArchivoCancelacion(1);
                }
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL CANCELAR LA VENTA";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        private void GrabarCancelacionVenta()
        {
            try
            {
                String nropedido = Session["nropedido"].ToString();
                String tipoDoc = Session["tipoDoc"].ToString();
                int empresa = Convert.ToInt16(Session["empresa"].ToString());
                int cant = 0;
                Boolean ok = true;
                InterfaceCancelacionVenta = new clsFacadeCancelacionVenta();
                ListaVerificarDiasCancelacion = new List<VerificarDiasCancelacion_Result>();
                ListaVerificarDiasCancelacion = InterfaceCancelacionVenta.VerificarDiasCancelacion(empresa, tipoDoc, nropedido);
                cant = Convert.ToInt16(ListaVerificarDiasCancelacion[0].diffechas.ToString());
                if (cant > 60)
                {
                    ok = false;
                    titulo = "Mensaje";
                    msg = "No se Puede Cancelar El Documento, ya que excede los 60 dias de antiguedad";
                }
                if (ok == true)
                {
                    GrabarCancelacionVentaXPedido();
                }
                else
                {
                    MostrarComentario(msg, titulo);
                }
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL VERIFICAR LA FECHA DEL DOCUMENTO";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        private void GrabarCancelacionVentaXPedido()
        {
            Boolean ok = false;
            Boolean ok2 = false;
            try
            {

                int empresa = Convert.ToInt16(((Persona)Session["USUARIO"]).Empleado.CodigoEmpresa);
                String tipoDoc = Session["tipoDoc"].ToString();
                String ParcialFlag = hid_ParcialFlag.Text;
                String opcionLista1, opcionLista2, opcionLista3;
                if (rbtCP.Checked)
                {
                    
                    opcionLista1 = (chkinternet.Checked) ?  "internet" : "";
                    opcionLista2 = (chkteleffija.Checked) ? "teleffija" : "";
                    opcionLista3 = (chktelefmovil.Checked) ? "telefmovil" : "";
                }
                else
                {
                    opcionLista1 = "";
                    opcionLista2 = "";
                    opcionLista3 = "";
                }
                String opcionLista = "";
                for (int i = 1; i <= 3; i++)
                {
                    objCancelacionVenta = new EntityLayer.CancelacionVenta();
                    InterfaceCancelacionVenta = new clsFacadeCancelacionVenta();
                    objCancelacionVenta.Empresa = empresa;
                    objCancelacionVenta.CodigoCancelacion = InterfaceCancelacionVenta.TraerUltimoId();
                    objCancelacionVenta.FechaCancelacion = DateTime.Now.Date;
                    objCancelacionVenta.DocumentoCliente = "";
                    objCancelacionVenta.TipoDocumento = tipoDoc;
                    objCancelacionVenta.NumeroDocumento = Session["nropedido"].ToString();
                    objCancelacionVenta.FechaRegistro = DateTime.Now.Date;
                    objCancelacionVenta.ParcialFlag = ParcialFlag;
                    objCancelacionVenta.Descripcion = "";
                    if (ParcialFlag == "P")
                    {
                        if (i == 1 && opcionLista1 != "")
                        {
                            opcionLista = opcionLista1;
                            ok2 = true;
                        }
                        else if (i == 2 && opcionLista2 != "")
                        {
                            opcionLista = opcionLista2;
                            ok2 = true;
                        }
                        else if (i == 3 && opcionLista3 != "")
                        {
                            opcionLista = opcionLista3;
                            ok2 = true;
                        }
                        else
                        {
                            ok2 = false;
                        }
                    }
                    else if (ParcialFlag == "T")
                    {
                        ok2 = true;
                        i = 4;
                    }
                    if (ok2 == true)
                    {
                        objCancelacionVenta.TipoProductoCancelado = opcionLista;
                        ok = InterfaceCancelacionVenta.GrabarCancelacionVenta(objCancelacionVenta);                        
                    }
                }
                
                if (ok == true)
                {
                    ListaActualizarDocumentoEstado = new List<ActualizarDocumentoEstado_Result>();
                    ListaActualizarDocumentoEstado = InterfaceCancelacionVenta.ActualizarDocumentoEstado(empresa, tipoDoc, Session["nropedido"].ToString());
                    int cant = Convert.ToInt16(ListaActualizarDocumentoEstado[0].result);
                    if (cant > 0)
                    {
                        Session["msg"] = "Cancelacion de Venta Grabada Correctamente";
                        Session["Grabacion"] = true;
                        Response.Redirect("~/Procesos/AdministrarPedido/frmAdministrarPedido.aspx", false);
                    }
                    else
                    {
                        titulo = "Mensaje";
                        msg = "No se actualizo el documento.";
                        MostrarComentario(msg, titulo);
                    }
                }
                else
                {
                    titulo = "Mensaje";
                    msg = "Error Al Grabar el Detale de la Venta";
                    MostrarComentario(msg, titulo);
                }
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL GRABAR LA CANCELACION DE LA VENTA";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        private void ImportarArchivoCancelacion(int tipo)
        {
            try
            {
                if (Session["ArchivoExcel"] != null)
                {
                    Boolean ok = false;
                    String select = "";
                    String archivo = Session["ArchivoExcel"].ToString().Trim();
                    String extension = Session["ExtensionExcel"].ToString().Trim();
                    DataTable data = new DataTable();
                    String tablas = "";
                    String cn;
                    String fichero = Server.MapPath("~/Procesos/CancelacionVenta/UploadFiles/" + archivo);
                    Session["fichero"] = fichero;
                    using (OleDbConnection connection = new OleDbConnection(GetConnectionString(fichero, extension)))
                    {
                        try
                        {
                            connection.Open();
                            cn = GetConnectionString(fichero, extension);

                            using (DataTable tables = connection.GetSchema("Tables"))
                            {
                                tablas = tables.Rows[0]["TABLE_NAME"].ToString().Trim();
                            }
                            select = String.Format("SELECT * FROM [{0}]", tablas);
                            using (OleDbDataAdapter adapter = new OleDbDataAdapter(select, connection))
                            {
                                adapter.Fill(data);
                            }
                            if (tipo == 1)
                            {
                                Session["ArchivoExcel"] = null;
                                Session["ExtensionExcel"] = null;
                                ok = ObtenerDatos(data);
                                if (ok == true)
                                {
                                    GrabarCancelacionVentaxImportacion();
                                }
                                else
                                {
                                    titulo = "Mensaje";
                                    msg = "Error Al Leer Er Archivo Subido Por Favor Verificar.";
                                    MostrarComentario(msg, titulo);
                                }
                            }
                            else if (tipo == 2)
                            {
                               ok =  obtenerDatosGrid(data);
                               if (ok == false)
                               {
                                   titulo = "Mensaje";
                                   msg = "Error Al Obtener los Datos Para La Tabla.";
                                   MostrarComentario(msg, titulo);
                               }
                            
                            }
                        }
                        catch (Exception ex)
                        {
                            titulo = "ERROR AL CONECTAR AL ARCHIVO";
                            msg = ex.Message;
                            MostrarComentario(msg, titulo);
                        }
                        finally
                        {
                            connection.Close();
                        }
                    }
                }
                else
                {
                    titulo = "Mensaje";
                    msg = "Debe Existir un Archivo Subido";
                    MostrarComentario(msg, titulo);
                }
            }
            catch (Exception ex)
            {
                titulo = "ERROR EN LA IMPORTACION DEL ARCHIVO";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
            finally
            {
                try
                {
                    if (Session["fichero"] != null && tipo == 1)
                    {
                        String fichero = Session["fichero"].ToString();
                        System.IO.File.Delete(fichero);
                        Session["fichero"] = null;
                    }
                }
                catch (Exception ex)
                {
                    titulo = "ERROR AL ELIMINAR EL FICHERO";
                    msg = ex.Message;
                    MostrarComentario(msg, titulo);
                }
                finally
                {
                    if (tipo == 1)
                    {
                        Session["fichero"] = null;
                    }
                }
            }
        }

        private String GetConnectionString(String filename, String extension)
        {
            OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder();
            try
            {
                String tipo = "";
                switch (extension)
                {
                    case "xlsx":
                        tipo = "Excel 12.0 Xml";
                        break;
                    case "xlsb":
                        tipo = "Excel 12.0";
                        break;
                    case "xlsm":
                        tipo = "Excel 12.0 Macro";
                        break;
                    case "xls":
                        tipo = "Excel 8.0";
                        break;
                    default:
                        tipo = "";
                        break;
                }
                builder.DataSource = filename;
                builder.Provider = (tipo == "Excel 8.0") ? "Microsoft.Jet.OLEDB.4.0" : "Microsoft.ACE.OLEDB.12.0";
                builder["Extended Properties"] = tipo;
            }
            catch (Exception ex)
            {
                builder = null;
                titulo = "ERROR EN LA CONEXION";
                msg = ex.Message;
                MostrarComentario(msg, titulo);

            }
            return builder.ConnectionString;
        }

        public struct strDatosExcel
        {
            public String dniCliente { get; set; }
            public String nomCliente { get; set; }
            public String nroPedido { get; set; }
            public String Servicio { get; set; }
            public String fechaCancelacion { get; set; }
            public String motivoCancelacion { get; set; }
        }

        public struct strDatosGrid
        {
            public String cliente { get; set; }
            public String operador { get; set; }
            public String fhregistro { get; set; }
            public String producto { get; set; }
            public String estado { get; set; }
            public String obsseg { get; set; }
        }
        private Boolean obtenerDatosGrid(DataTable data)
        {
            Boolean ok = false;
            try
            {
                String Cliente, Operador, FechaPedido, ProductoServicio, Estado, ObsSeg;
                datosExcelGrid = new List<strDatosGrid>();
                strDatosGrid item = new strDatosGrid();
                int cant = data.Rows.Count;
                String cabecera = "";
                int inicio = 0;
                for (int j = 0; j < cant; j++)
                {
                    cabecera = data.Rows[j][0].ToString();
                    inicio = (cabecera == "Documento de Identidad del Cliente") ? (j + 1) : 0;
                    if (inicio != 0) break;
                }
                for (int i = inicio; i < cant; i++)
                {
                    Cliente = data.Rows[i][1].ToString();
                    if (Cliente != "")
                    {
                        Operador = "";
                        FechaPedido = data.Rows[i][4].ToString();
                        ProductoServicio = data.Rows[i][3].ToString();
                        Estado = "";
                        ObsSeg = data.Rows[i][5].ToString();

                        item.cliente = Cliente;
                        item.operador = Operador;
                        item.fhregistro = FechaPedido;
                        item.producto = ProductoServicio;
                        item.estado = Estado;
                        item.obsseg = ObsSeg;
                        datosExcelGrid.Add(item);                       
                    }
                }
                dgvDetalleVenta.DataSource = datosExcelGrid;
                dgvDetalleVenta.DataBind();
                ok = true;
                Session["Listado"] = datosExcelGrid;
            }
            catch (Exception)
            {
                ok = false;
            }
            return ok;
        }

        private Boolean ObtenerDatos(DataTable data)
        {
            Boolean ok = false;
            try
            {
                String dniCliente, nomCliente, nroPedido, Servicio, fechaCancelacion, motivoCancelacion;
                datosExcel = new List<strDatosExcel>();
                strDatosExcel item = new strDatosExcel();
                int cant = data.Rows.Count;
                String cabecera = "";
                int inicio = 0;
                for (int j = 0; j < cant; j++)
                {
                    cabecera = data.Rows[j][0].ToString(); 
                    inicio = (cabecera == "Documento de Identidad del Cliente") ? (j + 1) : 0;
                    if (inicio != 0) break;
                }
                for (int i = inicio; i < cant; i++)
                {
                    dniCliente = data.Rows[i][0].ToString();
                    if (dniCliente != "")
                    {
                        nomCliente = data.Rows[i][1].ToString();
                        nroPedido = data.Rows[i][2].ToString();
                        Servicio = data.Rows[i][3].ToString();
                        fechaCancelacion = data.Rows[i][4].ToString();
                        motivoCancelacion = data.Rows[i][5].ToString();

                        item.dniCliente = dniCliente;
                        item.nomCliente = nomCliente;
                        item.nroPedido = nroPedido;
                        item.Servicio = Servicio;
                        item.fechaCancelacion = fechaCancelacion;
                        item.motivoCancelacion = motivoCancelacion;
                        datosExcel.Add(item);
                    }
                }
                ok = true;
            }
            catch (Exception ex)
            {
                ok = false;
                titulo = "ERROR AL OBTENER LOS DATOS DEL ARCHIVO";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
            return ok;
        }

        private void GrabarCancelacionVentaxImportacion()
        {
            Boolean ok = false;
            try
            {
                int empresa = Convert.ToInt16(((Persona)Session["USUARIO"]).Empleado.CodigoEmpresa);
                String tipoDoc;
                String ParcialFlag = hid_ParcialFlag.Text;
                String nroPedidos = "";
                String nroPedidosAP = "";
                String nroPedidosNL = "";
                String nroPedidosOK = "";
                int ind_guardar = 1;
                int cant, cant2;
                for (int i = 0; i < datosExcel.Count; i++)
                {
                    objCancelacionVenta = new EntityLayer.CancelacionVenta();
                    InterfaceCancelacionVenta = new clsFacadeCancelacionVenta();
                    objCancelacionVenta.Empresa = empresa;
                    tipoDoc = InterfaceCancelacionVenta.BuscarTipoDocumento(datosExcel[i].nroPedido.Trim());
                    if (tipoDoc == "V")
                    {
                        objCancelacionVenta.TipoDocumento = tipoDoc;
                        objCancelacionVenta.NumeroDocumento = datosExcel[i].nroPedido.Trim();
                        ListaVerificarDocumentoEstado = new List<VerificarDocumentoEstado_Result>();
                        ListaVerificarDocumentoEstado = InterfaceCancelacionVenta.VerificarDocumentoEstado(empresa, tipoDoc, objCancelacionVenta.NumeroDocumento);
                        cant2 = Convert.ToInt16(ListaVerificarDocumentoEstado[0].cantidad);
                        if (cant2 > 0)
                        {
                            objCancelacionVenta.CodigoCancelacion = InterfaceCancelacionVenta.TraerUltimoId();
                            objCancelacionVenta.FechaCancelacion = DateTime.Now.Date;
                            objCancelacionVenta.DocumentoCliente = datosExcel[i].dniCliente.Trim();
                            objCancelacionVenta.FechaRegistro = DateTime.Now.Date;
                            objCancelacionVenta.ParcialFlag = ParcialFlag;
                            objCancelacionVenta.Descripcion = datosExcel[i].motivoCancelacion.Trim();
                            ok = InterfaceCancelacionVenta.GrabarCancelacionVenta(objCancelacionVenta);
                        }
                        else
                        {
                            nroPedidos += (ok == false) ? datosExcel[i].nroPedido.Trim() : "";
                            nroPedidos += (i < (datosExcel.Count - 1) && (ok == false)) ? ", " : "";
                        }
                    }
                    else if (tipoDoc == "P")
                    {
                        nroPedidosAP += datosExcel[i].nroPedido.Trim();
                        nroPedidosAP += (i < (datosExcel.Count - 1)) ? ", " : "";
                        ok = false;
                    }
                    else if (tipoDoc == null)
                    {
                        nroPedidosNL += datosExcel[i].nroPedido.Trim();
                        nroPedidosNL += (i < (datosExcel.Count - 1)) ? ", " : "";
                        ok = false;
                    }

                    ind_guardar = (ok == false) ? 0 : 1;
                    if (ok == true)
                    {
                        ListaActualizarDocumentoEstado = new List<ActualizarDocumentoEstado_Result>();
                        ListaActualizarDocumentoEstado = InterfaceCancelacionVenta.ActualizarDocumentoEstado(empresa, tipoDoc, datosExcel[i].nroPedido);
                        cant = Convert.ToInt16(ListaActualizarDocumentoEstado[0].result);
                        if (cant == 0)
                        {
                            nroPedidos += objCancelacionVenta.NumeroDocumento;
                            ok = false;
                        }
                        else
                        {
                            nroPedidosOK += objCancelacionVenta.NumeroDocumento;
                            nroPedidosOK += (i < (datosExcel.Count - 1)) ? ", " : "";
                        }
                    }
                }
                if (ok == true)
                {
                    if (ind_guardar == 0 || nroPedidosOK.Trim() != "" || nroPedidos.Trim() != "" || nroPedidosAP.Trim() != "" || nroPedidosNL.Trim() != "")
                    {
                        titulo = "Mensaje";
                        msg = "";
                        if (nroPedidosOK.Trim() != "")
                        {
                            msg += String.Format("Los Documentos Cancelados Son : \n{0}\n", nroPedidosOK);
                        }
                        if (nroPedidos.Trim() != "")
                        {
                            msg += String.Format("Los Documentos No Estan Aprobados : \n{0}\n", nroPedidos);
                        }
                        if (nroPedidosAP.Trim() != "")
                        {
                            msg += String.Format("Los Documentos Solo Estan Registrados : \n{0}\n", nroPedidosAP);
                        }
                        if (nroPedidosNL.Trim() != "")
                        {
                            msg += String.Format("Los Documentos Deben Estar Registrados : \n{0}\n", nroPedidosNL);
                        }
                        MostrarComentario(msg, titulo);
                    }
                    else
                    {
                        titulo = "Mensaje";
                        msg = "Importacion Grabada Correctamente";
                        MostrarComentario(msg, titulo);
                    }
                }
                else
                {
                    if (ind_guardar == 0 || nroPedidosOK.Trim() != "" || nroPedidos.Trim() != "" || nroPedidosAP.Trim() != "" || nroPedidosNL.Trim() != "")
                    {
                        titulo = "Mensaje";
                        msg = "";
                        if (nroPedidosOK.Trim() != "")
                        {
                            msg += String.Format("Los Documentos Cancelados Son : \n{0}\n", nroPedidosOK);
                        }
                        if (nroPedidos.Trim() != "")
                        {
                            msg += String.Format("Los Documentos No Estan Aprobados : \n{0}\n", nroPedidos);
                        }
                        if (nroPedidosAP.Trim() != "")
                        {
                            msg += String.Format("Los Documentos Solo Estan Registrados : \n{0}\n", nroPedidosAP);
                        }
                        if (nroPedidosNL.Trim() != "")
                        {
                            msg += String.Format("Los Documentos Deben Estar Registrados : \n{0}\n", nroPedidosNL);
                        }
                        MostrarComentario(msg, titulo);
                    }
                    else
                    {
                        titulo = "Mensaje";
                        msg = "Error Al Importar El Archivo. Por Favor Verificar.";
                        MostrarComentario(msg, titulo);
                    }
                }
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL GRABAR LA CANCELACION POR IMPORTACION";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }            
        }

        protected void uplArchivo_FileUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e)
        {
            try 
            {
                String nombre = "";
                if (e.IsValid)
                {
                    nombre = e.UploadedFile.FileName;
                    Session["ArchivoExcelOriginal"] = nombre;
                    lblnomArchivo.Text = nombre;
                    String nombre1, nombre2;
                    String[] nombres = nombre.Split('.');
                    nombre1 = nombres[0];
                    nombre2 = nombres[1];

                    DateTime fechaActual = DateTime.Now;
                    String fecha = String.Format("{0}{1}{2}_{3}{4}{5}", fechaActual.Year.ToString("0000"), fechaActual.Month.ToString("00"), fechaActual.Day.ToString("00"), fechaActual.Hour.ToString("00"), fechaActual.Minute.ToString("00"), fechaActual.Second.ToString("00"));
                    
                    nombre = String.Format("{0}_{2}.{1}", nombre1, nombre2, fecha);
                    e.UploadedFile.SaveAs(MapPath("UploadFiles/" + nombre ));
                    ArchivoExcel = nombre.Trim();
                    ExtensionExcel = nombre2.Trim();
                    Session["ArchivoExcel"] = ArchivoExcel;
                    Session["ExtensionExcel"] = ExtensionExcel;                    
                    e.CallbackData = "successfully";
                    
                }
            }
            catch (Exception ex)
            {
                e.CallbackData = ex.Message;
                Session["ArchivoExcel"] = null;
                Session["ExtensionExcel"] = null;
            }
        }

        private void MostrarComentario(String msg, String titulo)
        {
            pcMensaje.HeaderText = titulo;
            lblMensaje.Text = msg;
            ScriptManager.RegisterStartupScript(this, GetType(), "script", "pcMensaje.Show();", true);
        }

        protected void CargarDatosGrid(object sender, EventArgs e)
        {
            try
            {
                ImportarArchivoCancelacion(2);
                dgvDetalleVenta.Enabled = true;
                MostrarComentario("Archivo Subido Correctamente", "Mensaje");
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL CARGAR LOS DATOS A LA TABLA";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
                btnGrabar.Enabled = false;
            }
        }
    }
}